Various mechanisms exist for booting a platform from FLASH or other non-volatile memory, especially during the power-on self test (POST) phase of platform restart. Existing systems access the various platform capabilities in a serial, blocking fashion. Existing systems typically load firmware components from compressed images on FLASH memory. FLASH memory is typically slow and relatively expensive to use. During boot, the decompression of images on the FLASH memory and loading of the images is typically the most time consuming of the boot phases. Images are not typically run in place from the FLASH device, because FLASH memory is much slower than system RAM, and the images must be decompressed before running.
There are certain platform classes that require being able to boot in a specific amount of time. This can be a significant challenge when one considers the serial behavior which existing basic input output systems (BIOS) are using. Some of the blocking operations that are executed serially are the decompressing of content from the FLASH device and the subsequent loading of the content into specific memory locations so that the content can be executed. A large portion of the initialization time is spent in this decompression and loading phase.
There are also certain classes of customers that require server platforms to maintain five-9's (e.g., 99.99999%) up-time for the platform. If a platform takes too long to boot, the platform cannot maintain the five-9's designation and will be eliminated as a choice for the customer to consider.